#ifndef RENDERER_H
#define RENDERER_H

#include <stdlib.h> 

#include <gl/glut.h>
#include <NxVec3.h>

#include "PhysxLogic.h"

class Renderer
{
public:
    static int elapsedTime;

public:
    static void Init(int argc, char** argv, char* title, int width, int height);
    static void Run();
    static void Exit();

    static void ResetLightPosition();

    //draw Primitives
    static void DrawBox(const NxVec3 &dim);
    static void DrawCapsule(const float height, const float radius);
    static void DrawPlane(const float size, const int subDivX, const int subDivZ);

private:
    static GLUquadricObj *quadric;
    static int currentMouseX;
    static int currentMouseY;
    static GLfloat lightPos[4];
    //callbacks
    static void RenderCallback();
    static void IdleCallback();
    static void ReshapeCallback(int width, int height);
    static void KeyboardCallback(unsigned char key, int x, int y);
    static void KeyboardSpecialCallback(int key, int x, int y);
    static void MouseClickCallback(int button, int state, int x, int y);
    static void MousePressedMovementCallback(int x, int y);
    static void MouseMovementCallback(int x, int y);
};

#endif //RENDERER_H
